package cn.qicaiwang.open.app.server;

import cn.qicaiwang.open.app.entity.LegalDocument;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 法律文书服务接口
 */
public interface LegalDocumentService {

    /**
     * 上传PDF法律文书
     * @param file PDF文件
     * @param documentName 文书名称
     * @return 上传成功的文书信息
     */
    LegalDocument uploadPdfDocument(MultipartFile file, String documentName, String categoryLevel1, String categoryLevel2);

    /**
     * 根据ID获取文书信息
     * @param id 文书ID
     * @return 文书信息
     */
    LegalDocument getDocumentById(Long id);

    /**
     * 根据案件编号查询文书列表
     * @param caseNumber 案件编号
     * @return 文书列表
     */
    List<LegalDocument> getDocumentsByCase(String caseNumber);

    /**
     * 根据文书类型查询文书列表
     * @param documentType 文书类型
     * @return 文书列表
     */
    List<LegalDocument> getDocumentsByType(String documentType);

    /**
     * 更新文书信息(不更新文件)
     * @param document 文书信息
     * @return 更新后的文书信息
     */
    LegalDocument updateDocumentInfo(LegalDocument document);

    /**
     * 删除文书(逻辑删除)
     * @param id 文书ID
     * @return 是否删除成功
     */
    boolean deleteDocument(Long id);

    /**
     * 替换PDF文件(保留原文档记录)
     * @param id 文书ID
     * @param newFile 新PDF文件
     * @return 更新后的文书信息
     */
    LegalDocument replaceDocumentFile(Long id, MultipartFile newFile);

    List<LegalDocument> getAllValidDocuments();










    /**
     * 根据一级分类获取二级分类
     */
    List<String> getLevel2CategoriesByLevel1(String level1);

    /**
     * 根据二级分类获取三级分类
     */
    List<String> getLevel3CategoriesByLevel2(String level2);

    /**
     * 根据三级分类分页获取文档列表
     * @param page 分页参数
     * @param level3 三级分类名称
     * @return 分页后的文档列表
     */
    Page<LegalDocument> getDocumentsByLevel3(Page<LegalDocument> page, String level3);

    /**
     * 获取普法状态
     * @return
     */
    List<LegalDocument> getDynamics();
}